
import Vue from 'vue'
import VueRouter from 'vue-router'

// 引入组件
import Home from '@/pages/Home'
import Login from '@/pages/Login'
import Register from '@/pages/Register'
import Search from '@/pages/Search'


// 使用插件
Vue.use(VueRouter)

//重写push和replace方法 解决路由跳转到相同地址时，控制台报错的问题
// 保存原来的push、replace方法
const originalPush = VueRouter.prototype.push
const originalReplace = VueRouter.prototype.replace
// 重写push方法
// 第一个参数：要跳转的路由
// 第二个参数：成功回调
// 第三个参数：失败回调
VueRouter.prototype.push = function push(location, resolve, reject) {
    if (resolve && reject) {
        originalPush.call(this, location, resolve, reject)
    }else{
        originalPush.call(this, location, () => {}, () => {})
    }
}
// 重写replace方法
VueRouter.prototype.replace = function replace(location, resolve, reject) {
    if (resolve && reject) {
        originalReplace.call(this, location, resolve, reject)
    }else{
        originalReplace.call(this, location, () => {}, () => {})
    }
}

// 配置路由
export default new VueRouter({
    routes: [
        {
            name: 'home',
            path: '/home',
            component: Home,
            // 路由元信息，可以在里面写一些自定义的信息, 
            // 路由的配置项的KV对，是固定的，不可以自己乱写的，想要添加自定义信息，只能添加meta
            meta: {
                show: true
            }
        },
        {
            name: 'login',
            path: '/login',
            component: Login,
            meta: {
                show: false
            }
        },
        {
            name: 'register',
            path: '/register',
            component: Register,
            meta: {
                show: false
            }
        },
        {
            name: 'search',
            path: '/search/:name',
            component: Search,
            meta: {
                show: true
            },
            props($route) {
                return {
                    name: $route.params.name,
                    keyword: $route.query.keyword
                }
            }
        },
        // 重定向：访问其他路径（没有配置路由的路径）时，自动跳转到首页
        {
            path: '/',
            redirect: '/home'
        }
    ]
})